package com.md.model.bo;

import com.md.util.StringUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.function.Function;

/**
 * 鸡肋
 *
 * @author 刘骄阳
 * 2023-02-18 21:15
 */
@Data
@NoArgsConstructor
@AllArgsConstructor(staticName = "of")
public class TypeTransformation<T> {
  /**
   * 要执行的方法
   */
  private Function<String, T> function;
  /**
   * 默认值
   */
  private T defaultValue;

  public T build(final Object value) {
    if (value == null) {
      // 等于null,说明是空数据
      return defaultValue;
    }
    String valueStr = String.valueOf(value);
    if (valueStr.isEmpty()) {
      // 等于0,说明空字符串
      return defaultValue;
    }
    if (valueStr.equalsIgnoreCase("null")) {
      return null;
    }
    return this.function.apply(valueStr);
  }

  @Override
  public String toString() {
    return StringUtil.objectToJson(this);
  }
}
